import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
// 样式/组件自动引入
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// Element自动导入图标
import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'
// 自定义图标文件路径
import { createSvgIconsPlugin } from "vite-plugin-svg-icons"
// 引入mock
import { viteMockServe } from 'vite-plugin-mock'

// 缓存组件时需要
import vueSetupExtend from 'vite-plugin-vue-setup-extend-plus'

export default defineConfig({
  plugins: [
    vue(),
    vueSetupExtend(),
    viteMockServe({
      mockPath: './mock', // 设置模拟数据的存储文件夹
      // @ts-ignore
      supportTs: true,//是否读取ts文件模块
      logger: true,//是否在控制台显示请求日志
      localEnabled: true,//设置是否启用本地mock文件
      prodEnabled: true//设置打包是否启用mock功能 
    }),
    AutoImport({
      dts: "src/types/auto-import.d.ts",
      resolvers: [
        ElementPlusResolver(),
        // 自动导入图标组件
        IconsResolver({
          prefix: 'Icon',
        }),
      ],
      imports: [
        // 需要自动导入的插件，自定义导入的API
        'vue',
        'vue-router',
        'pinia',
      ],
    }),
    Components({
      dts: 'src/types/components.d.ts', // 指明 .d.ts 文件的位置和文件名
      resolvers: [
        //自动注册图标组件
        IconsResolver({
          enabledCollections: ['ep'],
        }),
        ElementPlusResolver()
      ],
      deep: true, // 搜索子目录
      dirs: ['src/components', 'src/views', 'src/layouts'], // 按需加载的文件夹
    }),
    Icons({
      compiler: 'vue3',
      autoInstall: true
    }),
    createSvgIconsPlugin({
      // 自定义图标文件路径
      iconDirs: [
        path.resolve(process.cwd(), 'src/assets/icons/error'),
        path.resolve(process.cwd(), 'src/assets/icons')
      ],
      symbolId: 'icon-[dir]-[name]',
    }),
  ],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, './src')
    }
  },
  server: {
    // 允许IP访问
    host: "0.0.0.0",
    // 应用端口 (默认:5173)
    port: 5174,
    // 运行是否自动打开浏览器
    open: true,
    // proxy: {
    //   /**
    //    * 反向代理解决跨域配置
    //    * http://localhost:5173/dev-api/users (F12可见请求路径) => http://localhost:8989/users (实际请求后端 API 路径)
    //    *
    //    * env.VITE_APP_BASE_API: /dev-api
    //    * env.VITE_APP_API_URL: http://localhost:8989
    //    */
    //   '/dev-api': {
    //     changeOrigin: true,
    //     target: 'http://localhost:5173/',
    //     rewrite: (path) =>
    //       path.replace(new RegExp("^" + '/dev-api'), ""),
    //   },
    // },
  },
})
